<?php
namespace Admin\Model;
use Think\Model;

/**
 * Class MenuModel
 * @package Admin\Model
 */
class MenuModel extends  Model{
    /**
     * @var \Model|Model
     */
    private  $_db;

    /**
     * MenuModel constructor.
     */
    public function __construct(){
        parent::__construct();
        $this->_db = M('menu');
    }
    /*
     * 添加操作
     */
    /**
     * @param array $data
     * @return int|mixed
     */
    public function insert($data = []){
        if(!$data || !is_array($data)){
            return 0;
        }
        return $this->_db
            ->add($data);
    }

    /**
     * 获取响应条件的数据
     * @param $map
     * @param $page
     * @param $pageSize
     * @return mixed
     */
    public function getMenus($map , $page , $pageSize = 10)
    {
        //列表的数据是不等于-1的
        $map['status'] = ['neq' , -1];
        //设置起始页【总页数-1 * 每页数】
        $offset = ( $page - 1 ) * $pageSize ;
        $list = $this->_db
            ->where($map)
            ->limit($offset , $pageSize)
            ->order("listorder desc ,  menu_id desc") //先根据更新排序，然后按主键排序
            ->select();
        return $list;
    }

    /**
     * 获取数据的总条数
     * @param array $map
     * @return mixed
     */
    public function getMenuCount($map = [])
    {
        $map['status'] = ['neq' , -1];
        $list = $this->_db
            ->where($map)
            ->count();
        return $list;
    }

    /**
     * 更新逻辑
     * @param $id
     * @param $data
     * @return bool
     */
    public function updataMenuById($id , $data)
    {
        if (!$id || !is_numeric($id)){
            throw_exception("id不合法");
        }
        if (!$data || !is_array($data)){
            throw_exception("更新的数据不合法");
        }
        return $this->_db
            ->where("menu_id=" . $id)
            ->save($data);
    }

    /**
     * 删除。将status改成-1
     * @param $id
     * @param $status
     * @return bool
     */
    public function updateStatusById($id , $status)
    {
        if (!$id || !is_numeric($id)){
            throw_exception("id 不合法");
        }
        if (!$status || !is_numeric($status)){
            throw_exception("状态 不合法");
        }
        $data['status'] = $status;
        return $this->_db
            ->where('menu_id=' . $id)
            ->save($data);
    }

    /**
     * 更新排序
     * @param $id
     * @param $listorder
     * @return bool
     */
    public function updateListorderById($id , $listorder)
    {
        if (!$id || !is_numeric($id)){
            throw_exception("id 不合法");
        }
        $data['listorder'] = intval($listorder);
        $res = $this->_db
            ->where('menu_id=' . $id)
            ->save($data);
        return $res;
    }

    /**
     * 后台左侧菜单栏
     * @return mixed
     */
    public function getAdminMenus()
    {
        $data = [
          'status' => ['neq' , -1],
          'type' => 1,
        ];
        $res = $this->_db
            ->where($data)
            ->order('listorder desc , menu_id desc')
            ->select();
        return $res;
    }

    /**
     * 查询前端导航
     * @return mixed
     */
    public function getBarMenus()
    {
        $data = [
            'status' => ['neq' , -1],
            'type'  => 0
        ];
        $res = $this->_db
            ->where($data)
            ->order("listorder desc , menu_id desc")
            ->select();
        return $res;
    }


}